/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package managedbean;

import applicationexcepcion.OrdineException;
import applicationexcepcion.OrdineQuantitaException;
import ejb.cliente.CarrelloEJBLocal;
import entity.Prodotto;
import entity.SpeseSpedizione;
import java.io.Serializable;
import java.util.List;

/**
 *
 * @author Carmela
 */
public class CarrelloManager implements Serializable {

    private CarrelloEJBLocal carrelloEJB;
    
    public void setCarrello(GestioneCliente gc){
        this.carrelloEJB=gc.getCarrello();
    }

    public void aggiungiProdottoAlCarrello(Prodotto p, Long idNegozio, Integer quantita) throws OrdineQuantitaException {
        carrelloEJB.aggiungiProdottoAlCarrello(p.getCodiceBarre(), idNegozio, quantita);
    }

    public void rimuoviProdottoDalCarrello(Prodotto p, Long idNegozio) {
        carrelloEJB.rimuoviProdottoDalCarrello(p.getCodiceBarre(), idNegozio);
    }

    public void rimuoviQuantitaDalCarrello(Prodotto p, Integer quantita, Long idNegozio) {
        carrelloEJB.rimuoviQuantitaDalCarrello(p.getCodiceBarre(), quantita, idNegozio);
    }

    public List<Prodotto> getProdotti() {
        return carrelloEJB.getProdotti();
    }

    public Integer getQuantitaProdotto(Prodotto prodotto) {
        return carrelloEJB.getQuantitaProdotto(prodotto);
    }

    public Float getSubTotale() {
        return carrelloEJB.getSubTotale();
    }

    public Float getTotale(SpeseSpedizione spese) {
        return carrelloEJB.getTotale(spese);
    }

    public void processaOrdine(Long idCliente, SpeseSpedizione spese) throws OrdineException {
        carrelloEJB.processaOrdine(idCliente, spese);
    }
    
    public void riaggiungiUnProdotto(Prodotto p, Long idNegozio) throws OrdineQuantitaException{
        carrelloEJB.aggiungiProdottoAlCarrello(p.getCodiceBarre(), idNegozio, 1);
    }
    
    public void rimuoviProdotto(Prodotto p, Long idNegozio){
        carrelloEJB.rimuoviProdottoDalCarrello(p.getCodiceBarre(), idNegozio);
    }
    
    public void rimuoviUnProdotto(Prodotto p , Long idNegozio){
        carrelloEJB.rimuoviQuantitaDalCarrello(p.getCodiceBarre(), 1, idNegozio);
    }
    
    public void svuotaCarrello() {
        carrelloEJB.svuotaCarrello();
    }

    public boolean isEmpty() {
        if(carrelloEJB==null){
            return true;
        }
        return carrelloEJB.isEmpty();
    }
    
    /**
     * Creates a new instance of CarrelloManager
     */
    public CarrelloManager() {
    }
}
